<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>基本数据类型和引用数据类型的区别</title>
</head>
<body>
<script>
    // var a = 1;
    //运行机制 ==> 堆栈内存
    //内存(堆内存  栈内存)
    //堆内存 Heap(用来存放数据)
    //栈内存 Stack(用来执行数据)

    //执行上下文 Execution Context ==> EC
    //全局对象 Global Object ==> GO
    //变量对象 variable Object ==> VO


    // var a = 12;
    // var b = a;
    // b = 13;
    // console.log(a);//12


    // var obj1 = {
    //     a: 12
    // };
    // var obj2 = obj1;
    // obj2.a = 13;
    // console.log(obj1.a);//13

    // var obj1 = {};//0x0001
    // var obj2 = {};//0x0002
    // obj1.a = 13;
    // obj2.a = 14;
    // console.log(obj1.a);//13

    //基本数据类型是原始值,直接存贮在栈内存中,引用数据类型,他的值是在堆内存中开辟了一块新的内存空间,我们通过变量来复制一个引用数据类型的时候其实只是把这个开辟的内存空间的地址进行了一个赋值



    //内存 ==>1
    //声明 a
    // 1 赋值给 a

    // a=b=1;

    // var a = 1;
    // var b = a = 2;

    //成员访问优先级最高
    //通过画图的形式去描述下面代码在内存中的执行
    var a = {
        n: 1
    };
    var b = a;
    a.x = a = {
        n: 2
    }
    console.log(a.x);
    console.log(b);


</script>
</body>
</html>